Подписали меня на работу, за которую я сам по доброй воле ни за что бы не взялся на таких условиях.
В общем, реконструкция семи приточек.
На оборудовании жутко жмутся, и дешёвые поларбировские привода на клапанах на 0-10в поменять ни за что не хотят.
Как ими регулировать, я представляю себе смутно.
В контроллере есть только классический ПИД с выходом 0-100%.
И непредсказуемое время выполнения цикла программы.
Есть, разумеется, таймеры, но если я на нём задам 0.5с, заметить, что он дотикал я могу через 0.5 а могу и через 1.5.
Нет, в тупом-примитивном варианте я проблему решу, но это, боюсь, будет даже не ПИД, а ерунда какая-то.
Велосипед изобретать не хочется, хочется хоть каких-то образцов для работы с такими приводами.
В первом приближении хочется брать уставку, смотреть рассогласование с реальной т-рой, умножать на коэффициент, и приплюсовывать к переменной.
Другая процедура каждый цикл смотрит на эту переменную, и если в ней натикало более 1 сек, то она включит привод на 1 сек, и вычтет эту 1 сек из переменной.
При переходе с плюса на минус, переменная обнуляется, чтобы сильных прелётов не было.
На этом пока идеи заканчиваются...
ниченипонял. че нужно то? управление векторным приводом?
не понятно:(
сделайте свой регулятор
если проблема в цикле регулирования, то тут все просто есть время хода привода от 0 до 100% (к примеру 10 секунд), есть желаемый Вами цикл регулирования (к примеру 1 сек). Делаем ограничение, если на текущем цикле требуется переместить привод более чем на 10% (в данном примере), то перемещаем его только на 10% и начинаем цикл заново. Грубо говоря так:
%-новое положение клапана;
%1-рассчитанное на текущем щаге перемещение (+ или -);
%2-предъидущее положение;
//-модуль
IF /%1/>(100%/Время привода)*Время цикла THEN
IF %1<0 THEN %1=-(100%/Время привода)*Время цикла;
ELSE %1=(100%/Время привода)*Время цикла;
END IF;
END_IF;
%:=%2+%1;
%2:=%;
Все это дело нужно привязать к времени цикла соответственно, и ни каких перекрутов/недокрутов не будет.
Хорошо очень все это дело описано у TAC (1,5-2 года назад по совету LordN сам содрал оттуда регулятор).
Правильно ли я понял: Есть привод Белимо, 3-х поз. ~230В. И аффтор не знает как организовать ПИД на 3-х позиционном управлении (открыто/не трогаем/закрыто)??
Если да - то просто скачайте PDF-ник на ТРМ32 или ТРМ33 у Овна. Там всё разжевано.(За что Овну ОГРОМНОЕ спасибо от трудящихся).Типа 100% - открыто, 0%-закрыто и не трогаем.
Исчо у Хоневела есть преобразователь из линейного сигнала в 3-х и 2-х позиционный. Посмотрите в примочках для XL500(50,100). Может как-нибудь пригодится.
см.прицеп.
asm, дальше разберетёсь?
вот про трехпозиционные и аналоговые
Цитата(limite @ 2.9.2010, 16:13)

вот про трехпозиционные и аналоговые
Спасибо. Помню, что у кого-то специальный ПИД под такое управление был.
Цитата(LordN @ 2.9.2010, 13:52)

см.прицеп.
asm, дальше разберетёсь?
Как такое реализовать, понятно, но как оно работает, честно говоря не понимаю.
Имея обычный ПИД с выходом 0-100%, в случае, если он выдаёт менее 50, я шажками (пропорциональными рассогласованию относительно 50%) двигаюсь в одну сторону, а если более, то в другую?
А почему мы стремимся к 50%? Тон а ПИДе задаёт П, плюс, у него есть всякие мёртвые зоны. Неужели должно жить?
интегральное звено эмулирует обратную связь по положению штока. т.е. время хода выхода интеграла от 0 до 100% д.б. = времени хода реального привода.
компараторы выдают направление движения.
естественно там где-то нужно прикрутить мертвую зону к компараторам, инициализацию интеграла, установку начального положения штока, ограничение снизу минимального времени одного шага.
если же взять векторный привод со встроенным индикатором положения штока, то этот интеграл не нужен.
что еще.. dan2n в качестве векторного - это полный атас. время хода вперед и назад - прилично отличаются, помнится секунды в две-четыре.
время непрерывного хода и "шагового" хода - это просто пц. оно вообще может в разы отличаться. время минимального шага у него щас не помню, но не менее полусекунды. можете порыться на форуме сегнетоэлектриков, я там выкладывал макрос векторный. давно уже. плюс парни сделали свой и даже встроили его в конструктор. но я его не пробовал.
p.s. мнэ.. стоп. я ошибся. интеграл и компараторы надо поменять местами.. сорри.
в прицепе исправленное.
"Тенденция переменилась" (С)
До этих клапанов доберусь лишь к зиме, но доберусь обязательно.
Думаю не заниматься мазохизмом, и напишу пока письмецо, что или погано буду регулировать, с пониженной защищённостью от нештатных ситуаций, или пусть привода меняют.
В первом приближении задача решилась.
ПИД из википедии, берётся только приращение, суммируется шаг за шагом, как накапливается на пол секунды, даётся пол секунды движения привода и накопитель вычитает эти пол секунды.
Вот как бы только побороться с границами диапазона привода, лишённого концевиков, а то чувствую, износится механика...?
Поставить счётчик, на количество импульсов в одну сторону, и при превышении определённого количества игнорировать их?
Не беритесь за такие помоешные объекты, дороже потом встанет.
А меня как бы не спрашивают, браться мне за такие объекты, или нет.
Это начальство решает

В любом случае, это меня не убивает, и это делает меня "сильнее".
Может пригодится в жизни, может нет, но для общего развития такой опыт полезен.
Другое дело, что не хочется ходить по граблям и изобретать велосипеды, и если уж делать, то делать максимально правильно.
Скоро, там же, буду с Весперовскими частотниками по МодБасу учиться общаться...
Из-за нехватки выходов на борту контроллера, их (частотников) релейные выходы участвуют в технологии

))
Цитата
А меня как бы не спрашивают, браться мне за такие объекты, или нет.
Это начальство решает smile.gif
А что с Вами не советуются?
Цитата(asm @ 12.11.2010, 21:04)

Вот как бы только побороться с границами диапазона привода, лишённого концевиков, а то чувствую, износится механика...?
Поставить счётчик, на количество импульсов в одну сторону, и при превышении определённого количества игнорировать их?
износятся выходные элементы контроллера (если это реле), а в приводе то полюбому есть внутренние концевики, какой-нить термоконтакт или имеются выхода для организации внешнего останова (только если это не вообще ущербный привод)
я решаю это так:
суммирую время импульсов в одну сторону и если накапливается больше чем ход привода в 1,5 раза то считаю что привод достиг крайнего положение, соответственно если приходит импульс в другую сторону то обнуляю
Цитата(asm @ 13.11.2010, 0:04)

В первом приближении задача решилась.
ПИД из википедии, берётся только приращение, суммируется шаг за шагом, как накапливается на пол секунды, даётся пол секунды движения привода и накопитель вычитает эти пол секунды.
Вот как бы только побороться с границами диапазона привода, лишённого концевиков, а то чувствую, износится механика...?
Поставить счётчик, на количество импульсов в одну сторону, и при превышении определённого количества игнорировать их?
а чем не устроила нарисованная мною схема? у вас трудности с реализацией алгоритма по ней? не сваливайте в одну кучу пид и управление вектором и у вас все получится.
Ха, меня тоже подписали на эту работу - придётся всю инфу перелопатить.
Чего то это все мне напоминает, если это в сколково, то можете не дергаться, тут все упирается в контроллер, и не какими алгоритмами не поможешь. Контроллеры Хоневелл? если да то я автор.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.